/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cxhd.lis.ctrl;

import com.cxhd.lis.service.ZkObjectService;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jfinal.core.Controller;
import com.jfinal.ext.route.ControllerBind;
import com.jfinal.plugin.activerecord.Db;
import java.util.List;
import java.util.Map;

/**
 *
 * @author 52461
 */
@ControllerBind(controllerKey = "/view/zk/zk_object")
public class ZkObjectCtrl extends Controller {
    
    private ZkObjectService zkob = new ZkObjectService();
    
    public void index() {
        render("/view/zk/zk_object_manager.jsp");
    }
    
    public void getDeviceItem() {
        String device = getPara("device");
        String sql = "select a.TESTID,a.TESTPK,a.DEVICEID,a.DEVICEPK,b.CHINESENAME FROM pp_device_test a LEFT JOIN lis_testdescribe b on a.TESTPK=b.PK WHERE a.DEVICEID='" + device + "'";
        renderJson(Db.find(sql));
    }
    
    public void getZkDeviceItem() {
        String device = getPara("device");
        String sql = "select a.*,b.CHINESENAME,b.TESTID FROM zk_object a LEFT JOIN lis_testdescribe b on a.TESTPK=b.PK WHERE a.DEVICEID='" + device + "'";
        renderJson(Db.find(sql));
        
    }

    /*
    *保存质控物
    *质控规则说明
    
    上标: º ¹ ² ³ ⁴⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ ′ ½
    下标:₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎
    * 默认westgard 多规则 1  还有其他质控规则  百分比控制 2 范围控制3 定性控制 4
    * 失控规则说明
    *   1₃s 一个质控结果超过平均数±3s，就判断失控，该规则主要对随机误差敏感。
    *   2₂s 两个连续的质控结果同时超过平均数＋2s或平均数－2s，就判断失控，该规则对系统误差敏感。
    *   R₄s 一个质控结果超过平均数＋2s，另一个质控结果超过平均数－2s，就判断失控，该规则对随机误差敏感。
    *   4₁s 四个连续的质控结果同时超过平均数＋1s或平均数－1s，就判断失控，该规则对系统误差敏感。
    *   10x 10个连续的质控结果落在平均数的一侧（高或低于平均数，对偏离的大小没有要求），就判断失控，该规则对系统误差敏感。
     */
    public void saveZkItem() {
        
        List<Map<String, String>> items = new Gson().fromJson(getPara("data"), new TypeToken<List<Map<String, String>>>() {
        }.getType());
        if (zkob.save(items)) {
            renderText("true");
        } else {
            renderText("false");
        }
    }

    public void deleteItem() {
        Db.update("delete from zk_object where PK= " + getPara("pk"));
        renderText("true");
    }
}
